package com.tsd.jxc.vo;

import cn.hutool.core.convert.Convert;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.tsd.core.utils.HlpUtils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @ClassName: PrintVo
 * @Description: TODO
 * @Author: Hillpool
 * @Date: 2022/11/2 17:06
 * @Version: 1.0
 */
public class PrintVo {
    private String code;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date order_date;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date quotation_date;
    private String client_order_code;
    private String client_display;
    private String client_recv_address;
    private String biz_office_name;
    private String office_contract_name;
    private BigDecimal qty;
    private BigDecimal amount;
    private BigDecimal pre_freight;
    private BigDecimal real_freight;
    private Integer free_shipping;
    private BigDecimal total_amount;
    private BigDecimal ignore_amount;
    private BigDecimal should_receive_amount;
    private BigDecimal received_amount;
    private BigDecimal un_receive_amount;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date client_req_delivery_date;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date client_req_receive_date;
    private String delivery_mode;
    private String salesman_name;
    private Integer state;
    private BigDecimal return_qty;
    private BigDecimal return_amount;
    private String note_info;
    private Integer out_bill;
    private Integer gen_finance;
    private String print_name;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd_HH_mm_ss, locale = "zh", timezone = "GMT+8")
    private Date print_datetime;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date return_date;
    private String sale_order_code;
    private BigDecimal should_return_amount;
    private BigDecimal un_return_amount;
    private Integer in_bill;
    private String supplier_display;
    private String supplier_contract_name;
    private String supplier_contract_phone;
    private BigDecimal should_pay_amount;
    private BigDecimal paid_amount;
    private BigDecimal un_pay_amount;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date req_delivery_date;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date req_receive_date;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date real_receive_date;
    private String buyer_name;
    private String review_person_name;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date review_date;
    private String in_type_name;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date in_date;
    private String src_code;
    private String warehouse_name;
    private BigDecimal in_qty;
    private String creator_name;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd_HH_mm_ss, locale = "zh", timezone = "GMT+8")
    private Date create_date;
    private Integer audit_state;
    private String auditor_name;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd_HH_mm_ss, locale = "zh", timezone = "GMT+8")
    private Date audit_date;
    private Integer execute_state;
    private String executor_name;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd_HH_mm_ss, locale = "zh", timezone = "GMT+8")
    private Date execute_date;
    private String out_type_name;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date out_date;
    private BigDecimal out_qty;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date check_date;
    private Integer update_stock;
    @JsonFormat(pattern = HlpUtils.Format_Yyyy_MM_dd, locale = "zh", timezone = "GMT+8")
    private Date update_stock_date;

    private Integer index;
    private Integer sn;
    private String goods_name;
    private String spec_name;
    private BigDecimal price;
    private String order_code;
    private BigDecimal position_in_qty;
    private BigDecimal position_out_qty;
    private String position_name;
    private String new_position_name;
    private BigDecimal old_qty;
    private BigDecimal check_qty;
    private String unit_name;

    private String spec_info;

    private String unit;

    private String client_linker_name;

    private String client_linker_mobile;

    private String client_linker_address;

    private List<PrintVo> list;
    private List<PrintVo> detail_list;
    private List<PrintVo> item_list;
    private List<PrintVo> item_position_list;
    private List<PrintVo> delivery_item_list;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Date getOrder_date() {
        return order_date;
    }

    public void setOrder_date(Date order_date) {
        this.order_date = order_date;
    }

    public Date getQuotation_date() {
        return quotation_date;
    }

    public void setQuotation_date(Date quotation_date) {
        this.quotation_date = quotation_date;
    }

    public String getClient_order_code() {
        return client_order_code;
    }

    public void setClient_order_code(String client_order_code) {
        this.client_order_code = client_order_code;
    }

    public String getClient_display() {
        return client_display;
    }

    public void setClient_display(String client_display) {
        this.client_display = client_display;
    }

    public String getBiz_office_name() {
        return biz_office_name;
    }

    public void setBiz_office_name(String biz_office_name) {
        this.biz_office_name = biz_office_name;
    }

    public String getOffice_contract_name() {
        return office_contract_name;
    }

    public void setOffice_contract_name(String office_contract_name) {
        this.office_contract_name = office_contract_name;
    }

    public BigDecimal getQty() {
        return qty;
    }

    public void setQty(BigDecimal qty) {
        this.qty = qty;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getPre_freight() {
        return pre_freight;
    }

    public void setPre_freight(BigDecimal pre_freight) {
        this.pre_freight = pre_freight;
    }

    public BigDecimal getReal_freight() {
        return real_freight;
    }

    public void setReal_freight(BigDecimal real_freight) {
        this.real_freight = real_freight;
    }

    public Integer getFree_shipping() {
        return free_shipping;
    }

    public void setFree_shipping(Integer free_shipping) {
        this.free_shipping = free_shipping;
    }

    public BigDecimal getTotal_amount() {
        return total_amount;
    }

    public void setTotal_amount(BigDecimal total_amount) {
        this.total_amount = total_amount;
    }

    public BigDecimal getIgnore_amount() {
        return ignore_amount;
    }

    public void setIgnore_amount(BigDecimal ignore_amount) {
        this.ignore_amount = ignore_amount;
    }

    public BigDecimal getShould_receive_amount() {
        return should_receive_amount;
    }

    public void setShould_receive_amount(BigDecimal should_receive_amount) {
        this.should_receive_amount = should_receive_amount;
    }

    public BigDecimal getReceived_amount() {
        return received_amount;
    }

    public void setReceived_amount(BigDecimal received_amount) {
        this.received_amount = received_amount;
    }

    public BigDecimal getUn_receive_amount() {
        return un_receive_amount;
    }

    public void setUn_receive_amount(BigDecimal un_receive_amount) {
        this.un_receive_amount = un_receive_amount;
    }

    public Date getClient_req_delivery_date() {
        return client_req_delivery_date;
    }

    public void setClient_req_delivery_date(Date client_req_delivery_date) {
        this.client_req_delivery_date = client_req_delivery_date;
    }

    public Date getClient_req_receive_date() {
        return client_req_receive_date;
    }

    public void setClient_req_receive_date(Date client_req_receive_date) {
        this.client_req_receive_date = client_req_receive_date;
    }

    public String getDelivery_mode() {
        return delivery_mode;
    }

    public void setDelivery_mode(String delivery_mode) {
        this.delivery_mode = delivery_mode;
    }

    public String getSalesman_name() {
        return salesman_name;
    }

    public void setSalesman_name(String salesman_name) {
        this.salesman_name = salesman_name;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public BigDecimal getReturn_qty() {
        return return_qty;
    }

    public void setReturn_qty(BigDecimal return_qty) {
        this.return_qty = return_qty;
    }

    public BigDecimal getReturn_amount() {
        return return_amount;
    }

    public void setReturn_amount(BigDecimal return_amount) {
        this.return_amount = return_amount;
    }

    public String getNote_info() {
        return note_info;
    }

    public void setNote_info(String note_info) {
        this.note_info = note_info;
    }

    public Integer getOut_bill() {
        return out_bill;
    }

    public void setOut_bill(Integer out_bill) {
        this.out_bill = out_bill;
    }

    public Integer getGen_finance() {
        return gen_finance;
    }

    public void setGen_finance(Integer gen_finance) {
        this.gen_finance = gen_finance;
    }

    public String getPrint_name() {
        return print_name;
    }

    public void setPrint_name(String print_name) {
        this.print_name = print_name;
    }

    public Date getPrint_datetime() {
        return print_datetime;
    }

    public void setPrint_datetime(Date print_datetime) {
        this.print_datetime = print_datetime;
    }

    public Date getReturn_date() {
        return return_date;
    }

    public void setReturn_date(Date return_date) {
        this.return_date = return_date;
    }

    public String getSale_order_code() {
        return sale_order_code;
    }

    public void setSale_order_code(String sale_order_code) {
        this.sale_order_code = sale_order_code;
    }

    public BigDecimal getShould_return_amount() {
        return should_return_amount;
    }

    public void setShould_return_amount(BigDecimal should_return_amount) {
        this.should_return_amount = should_return_amount;
    }

    public BigDecimal getUn_return_amount() {
        return un_return_amount;
    }

    public void setUn_return_amount(BigDecimal un_return_amount) {
        this.un_return_amount = un_return_amount;
    }

    public Integer getIn_bill() {
        return in_bill;
    }

    public void setIn_bill(Integer in_bill) {
        this.in_bill = in_bill;
    }

    public String getSupplier_display() {
        return supplier_display;
    }

    public void setSupplier_display(String supplier_display) {
        this.supplier_display = supplier_display;
    }

    public String getSupplier_contract_name() {
        return supplier_contract_name;
    }

    public void setSupplier_contract_name(String supplier_contract_name) {
        this.supplier_contract_name = supplier_contract_name;
    }

    public String getSupplier_contract_phone() {
        return supplier_contract_phone;
    }

    public void setSupplier_contract_phone(String supplier_contract_phone) {
        this.supplier_contract_phone = supplier_contract_phone;
    }

    public BigDecimal getShould_pay_amount() {
        return should_pay_amount;
    }

    public void setShould_pay_amount(BigDecimal should_pay_amount) {
        this.should_pay_amount = should_pay_amount;
    }

    public BigDecimal getPaid_amount() {
        return paid_amount;
    }

    public void setPaid_amount(BigDecimal paid_amount) {
        this.paid_amount = paid_amount;
    }

    public BigDecimal getUn_pay_amount() {
        return un_pay_amount;
    }

    public void setUn_pay_amount(BigDecimal un_pay_amount) {
        this.un_pay_amount = un_pay_amount;
    }

    public Date getReq_delivery_date() {
        return req_delivery_date;
    }

    public void setReq_delivery_date(Date req_delivery_date) {
        this.req_delivery_date = req_delivery_date;
    }

    public Date getReq_receive_date() {
        return req_receive_date;
    }

    public void setReq_receive_date(Date req_receive_date) {
        this.req_receive_date = req_receive_date;
    }

    public Date getReal_receive_date() {
        return real_receive_date;
    }

    public void setReal_receive_date(Date real_receive_date) {
        this.real_receive_date = real_receive_date;
    }

    public String getBuyer_name() {
        return buyer_name;
    }

    public void setBuyer_name(String buyer_name) {
        this.buyer_name = buyer_name;
    }

    public String getReview_person_name() {
        return review_person_name;
    }

    public void setReview_person_name(String review_person_name) {
        this.review_person_name = review_person_name;
    }

    public Date getReview_date() {
        return review_date;
    }

    public void setReview_date(Date review_date) {
        this.review_date = review_date;
    }

    public String getIn_type_name() {
        return in_type_name;
    }

    public void setIn_type_name(String in_type_name) {
        this.in_type_name = in_type_name;
    }

    public Date getIn_date() {
        return in_date;
    }

    public void setIn_date(Date in_date) {
        this.in_date = in_date;
    }

    public String getSrc_code() {
        return src_code;
    }

    public void setSrc_code(String src_code) {
        this.src_code = src_code;
    }

    public String getWarehouse_name() {
        return warehouse_name;
    }

    public void setWarehouse_name(String warehouse_name) {
        this.warehouse_name = warehouse_name;
    }

    public BigDecimal getIn_qty() {
        return in_qty;
    }

    public void setIn_qty(BigDecimal in_qty) {
        this.in_qty = in_qty;
    }

    public String getCreator_name() {
        return creator_name;
    }

    public void setCreator_name(String creator_name) {
        this.creator_name = creator_name;
    }

    public Date getCreate_date() {
        return create_date;
    }

    public void setCreate_date(Date create_date) {
        this.create_date = create_date;
    }

    public Integer getAudit_state() {
        return audit_state;
    }

    public void setAudit_state(Integer audit_state) {
        this.audit_state = audit_state;
    }

    public String getAuditor_name() {
        return auditor_name;
    }

    public void setAuditor_name(String auditor_name) {
        this.auditor_name = auditor_name;
    }

    public Date getAudit_date() {
        return audit_date;
    }

    public void setAudit_date(Date audit_date) {
        this.audit_date = audit_date;
    }

    public Integer getExecute_state() {
        return execute_state;
    }

    public void setExecute_state(Integer execute_state) {
        this.execute_state = execute_state;
    }

    public String getExecutor_name() {
        return executor_name;
    }

    public void setExecutor_name(String executor_name) {
        this.executor_name = executor_name;
    }

    public Date getExecute_date() {
        return execute_date;
    }

    public void setExecute_date(Date execute_date) {
        this.execute_date = execute_date;
    }

    public String getOut_type_name() {
        return out_type_name;
    }

    public void setOut_type_name(String out_type_name) {
        this.out_type_name = out_type_name;
    }

    public Date getOut_date() {
        return out_date;
    }

    public void setOut_date(Date out_date) {
        this.out_date = out_date;
    }

    public BigDecimal getOut_qty() {
        return out_qty;
    }

    public void setOut_qty(BigDecimal out_qty) {
        this.out_qty = out_qty;
    }

    public Date getCheck_date() {
        return check_date;
    }

    public void setCheck_date(Date check_date) {
        this.check_date = check_date;
    }

    public Integer getUpdate_stock() {
        return update_stock;
    }

    public void setUpdate_stock(Integer update_stock) {
        this.update_stock = update_stock;
    }

    public Date getUpdate_stock_date() {
        return update_stock_date;
    }

    public void setUpdate_stock_date(Date update_stock_date) {
        this.update_stock_date = update_stock_date;
    }

    public Integer getIndex() {
        return index;
    }

    public void setIndex(Integer index) {
        this.index = index;
    }

    public Integer getSn() {
        return sn;
    }

    public void setSn(Integer sn) {
        this.sn = sn;
    }

    public String getGoods_name() {
        return goods_name;
    }

    public void setGoods_name(String goods_name) {
        this.goods_name = goods_name;
    }

    public String getSpec_name() {
        return spec_name;
    }

    public void setSpec_name(String spec_name) {
        this.spec_name = spec_name;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public String getOrder_code() {
        return order_code;
    }

    public void setOrder_code(String order_code) {
        this.order_code = order_code;
    }

    public BigDecimal getPosition_in_qty() {
        return position_in_qty;
    }

    public void setPosition_in_qty(BigDecimal position_in_qty) {
        this.position_in_qty = position_in_qty;
    }

    public BigDecimal getPosition_out_qty() {
        return position_out_qty;
    }

    public void setPosition_out_qty(BigDecimal position_out_qty) {
        this.position_out_qty = position_out_qty;
    }

    public String getPosition_name() {
        return position_name;
    }

    public void setPosition_name(String position_name) {
        this.position_name = position_name;
    }

    public String getNew_position_name() {
        return new_position_name;
    }

    public void setNew_position_name(String new_position_name) {
        this.new_position_name = new_position_name;
    }

    public BigDecimal getOld_qty() {
        return old_qty;
    }

    public void setOld_qty(BigDecimal old_qty) {
        this.old_qty = old_qty;
    }

    public BigDecimal getCheck_qty() {
        return check_qty;
    }

    public void setCheck_qty(BigDecimal check_qty) {
        this.check_qty = check_qty;
    }

    public String getUnit_name() {
        return unit_name;
    }

    public void setUnit_name(String unit_name) {
        this.unit_name = unit_name;
    }

    public String getSpec_info() {
        return spec_info;
    }

    public void setSpec_info(String spec_info) {
        this.spec_info = spec_info;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public String getClient_linker_name() {
        return client_linker_name;
    }

    public void setClient_linker_name(String client_linker_name) {
        this.client_linker_name = client_linker_name;
    }

    public String getClient_linker_mobile() {
        return client_linker_mobile;
    }

    public void setClient_linker_mobile(String client_linker_mobile) {
        this.client_linker_mobile = client_linker_mobile;
    }

    public String getClient_linker_address() {
        return client_linker_address;
    }

    public void setClient_linker_address(String client_linker_address) {
        this.client_linker_address = client_linker_address;
    }

    public List<PrintVo> getList() {
        return list;
    }

    public void setList(List<PrintVo> list) {
        this.list = list;
    }

    public List<PrintVo> getDetail_list() {
        return detail_list;
    }

    public void setDetail_list(List<PrintVo> detail_list) {
        this.detail_list = detail_list;
    }

    public List<PrintVo> getItem_list() {
        return item_list;
    }

    public void setItem_list(List<PrintVo> item_list) {
        this.item_list = item_list;
    }

    public List<PrintVo> getItem_position_list() {
        return item_position_list;
    }

    public void setItem_position_list(List<PrintVo> item_position_list) {
        this.item_position_list = item_position_list;
    }

    public String getPrint_date() {
        if (!HlpUtils.isEmpty(this.getPrint_datetime())) {
            return HlpUtils.date2String(this.getPrint_datetime(), HlpUtils.Format_Yyyy_MM_dd);
        }
        return "";
    }

    public String getFree_shipping_str() {
        if (!HlpUtils.isEmpty(this.getFree_shipping())) {
            return this.getFree_shipping() == 1 ? "是" : "否";
        }
        return "";
    }

    public String getState_str() {
        if (!HlpUtils.isEmpty(this.getAudit_state())) {
            if (this.getAudit_state() == -1) {
                return "暂存";
            }
            return this.getAudit_state() == 1 ? "已审核" : "待审核";
        }
        return "";
    }

    public String getOut_bill_str() {
        if (!HlpUtils.isEmpty(this.getOut_bill())) {
            if (this.getOut_bill() == 2) {
                return "全部生成";
            }
            return this.getOut_bill() == 1 ? "部分生成" : "否";
        }
        return "";
    }

    public String getGen_finance_str() {
        if (!HlpUtils.isEmpty(this.getGen_finance())) {
            return this.getGen_finance() == 1 ? "是" : "否";
        }
        return "";
    }

    public String getIn_bill_str() {
        if (!HlpUtils.isEmpty(this.getIn_bill())) {
            if (this.getIn_bill() == 2) {
                return "全部生成";
            }
            return this.getIn_bill() == 1 ? "部分生成" : "否";
        }
        return "";
    }

    public String getAudit_state_str() {
        if (!HlpUtils.isEmpty(this.getAudit_state())) {
            if (this.getAudit_state() == -1) {
                return "暂存";
            }
            return this.getAudit_state() == 1 ? "已审核" : "待审核";
        }
        return "";
    }

    public String getExecute_state_str() {
        if (!HlpUtils.isEmpty(this.getExecute_state())) {
            return this.getExecute_state() == 1 ? "已执行" : "待执行";
        }
        return "";
    }

    public String getUpdate_stock_str() {
        if (!HlpUtils.isEmpty(this.getUpdate_stock())) {
            return this.getUpdate_stock() == 1 ? "是" : "否";
        }
        return "";
    }

    public String getTotal_amount_upper() {
        if (!HlpUtils.isEmpty(this.getTotal_amount()) && this.getTotal_amount().doubleValue() > 0) {
            return Convert.digitToChinese(this.getTotal_amount());
        }
        return "零";
    }

    public String getClient_recv_address() {
        return client_recv_address;
    }

    public List<PrintVo> getDelivery_item_list() {
        return delivery_item_list;
    }

    public void setDelivery_item_list(List<PrintVo> delivery_item_list) {
        this.delivery_item_list = delivery_item_list;
    }

    public void setClient_recv_address(String client_recv_address) {
        this.client_recv_address = client_recv_address;
    }
}
